{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "X.shape: (5000, 400)\n",
      "Y.shape: (5000, 1)\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "import scipy.io as scio\n",
    "import scipy.optimize as opt\n",
    "from matplotlib import pyplot as plt\n",
    "\n",
    "data = scio.loadmat('data_sets/ex3data1.mat')\n",
    "X = data['X']\n",
    "Y = data['y']\n",
    "\n",
    "print('X.shape:', X.shape)\n",
    "print('Y.shape:', Y.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [],
   "source": [
    "def displayData(x):\n",
    "    plt.figure()\n",
    "    n = np.round(np.sqrt(x.shape[0])).astype(int)\n",
    "    # define 10*10 subplots\n",
    "    fig, ax = plt.subplots(nrows = n, ncols = n, sharex = True, sharey = True, figsize = (6, 6))\n",
    "    # draw a number in each subplot\n",
    "    for row in range(n):\n",
    "        for col in range(n):\n",
    "            ax[row, col].imshow(x[10 * row + col].reshape(20, 20).T, cmap = 'gray')\n",
    "    plt.xticks([])\n",
    "    plt.yticks([])\n",
    "    plt.show()\n",
    "\n",
    "def sigmoid(x):\n",
    "    return 1 / (1 + np.exp(-x))\n",
    "\n",
    "def cost_function(theta, x, y):\n",
    "    m = y.size\n",
    "    h_x = sigmoid(x @ theta) # x->(5000,401),theta->(401,1),h_x->(5000,1)\n",
    "    return (-1 / m) * (y @ np.log(h_x) + (1 - y) @ np.log(1- h_x)) \n",
    "\n",
    "def gradient(theta, x, y):\n",
    "    m = y.size\n",
    "    h_x = sigmoid(x @ theta) # x->(5000,401),theta->(401,1),h_x->(5000,1)\n",
    "    return (1 / m) * (x.T @ (h_x - y)) # x.T->(401,5000),h_x->(5000,1),result->(401, 1)\n",
    "\n",
    "def cost_reg(theta, x, y, L):\n",
    "    m = y.size\n",
    "    theta_ = theta[1:]\n",
    "    return cost_function(theta, x, y) + (L / (2 * m)) * np.sum(theta_**2)\n",
    "\n",
    "def gradient_reg(theta, x, y, L):\n",
    "    m = y.size\n",
    "    theta_ = (L / m) * theta\n",
    "    theta_[0] = 0\n",
    "    return gradient(theta, x, y) + theta_\n",
    "\n",
    "def one_vs_all(all_theta, x, y, L, K):\n",
    "    for i in range(K):\n",
    "        # set a unique y_ that just contains 0 or 1 for each classifier\n",
    "        y_ = np.array([1 if j == i+1 else 0 for j in y])\n",
    "        e = opt.minimize(fun = cost_reg, x0 = all_theta[:, i:i+1], args = (x, y_, L), method = 'CG', jac = gradient_reg, options={\"maxiter\":500, \"disp\":True})\n",
    "        all_theta[:, i:i+1] = e['x'].reshape(e['x'].shape[0], 1)\n",
    "    return all_theta\n",
    "        "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 432x288 with 0 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x432 with 100 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Visualizing the data\n",
    "s = np.random.permutation(X) # randomly sort but don't affect the order of X\n",
    "a = s[:100, :] # choose s in the front of the 100th row\n",
    "displayData(a)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "X.shape: (5000, 401)\n",
      "all_theta.shape: (401, 10)\n",
      "Optimization terminated successfully.\n",
      "         Current function value: 0.013132\n",
      "         Iterations: 101\n",
      "         Function evaluations: 387\n",
      "         Gradient evaluations: 387\n",
      "Optimization terminated successfully.\n",
      "         Current function value: 0.050817\n",
      "         Iterations: 194\n",
      "         Function evaluations: 595\n",
      "         Gradient evaluations: 595\n",
      "Optimization terminated successfully.\n",
      "         Current function value: 0.057607\n",
      "         Iterations: 266\n",
      "         Function evaluations: 799\n",
      "         Gradient evaluations: 799\n",
      "Optimization terminated successfully.\n",
      "         Current function value: 0.033076\n",
      "         Iterations: 206\n",
      "         Function evaluations: 688\n",
      "         Gradient evaluations: 688\n",
      "Optimization terminated successfully.\n",
      "         Current function value: 0.054469\n",
      "         Iterations: 237\n",
      "         Function evaluations: 711\n",
      "         Gradient evaluations: 711\n",
      "Optimization terminated successfully.\n",
      "         Current function value: 0.018264\n",
      "         Iterations: 132\n",
      "         Function evaluations: 485\n",
      "         Gradient evaluations: 485\n",
      "Optimization terminated successfully.\n",
      "         Current function value: 0.030649\n",
      "         Iterations: 165\n",
      "         Function evaluations: 563\n",
      "         Gradient evaluations: 563\n",
      "Optimization terminated successfully.\n",
      "         Current function value: 0.078461\n",
      "         Iterations: 251\n",
      "         Function evaluations: 692\n",
      "         Gradient evaluations: 692\n",
      "Optimization terminated successfully.\n",
      "         Current function value: 0.071194\n",
      "         Iterations: 259\n",
      "         Function evaluations: 748\n",
      "         Gradient evaluations: 748\n",
      "Optimization terminated successfully.\n",
      "         Current function value: 0.008568\n",
      "         Iterations: 134\n",
      "         Function evaluations: 522\n",
      "         Gradient evaluations: 522\n"
     ]
    }
   ],
   "source": [
    "L = 0.1\n",
    "K = 10\n",
    "x0 = np.ones(X.shape[0])\n",
    "X = np.column_stack((x0, X))\n",
    "print(\"X.shape:\", X.shape)\n",
    "all_theta = np.zeros((X.shape[1], K))\n",
    "print(\"all_theta.shape:\", all_theta.shape)\n",
    "\n",
    "all_theta = one_vs_all(all_theta, X, Y, L, K)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Prediction"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "accuracy = 96.46000000000001%\n"
     ]
    }
   ],
   "source": [
    "def probability(x, theta):\n",
    "    return sigmoid(x @ theta)\n",
    "\n",
    "def predict(prob):\n",
    "    n = prob.shape[0]\n",
    "    y_p = np.zeros((n, 1))\n",
    "    for i in range(n):\n",
    "        y_p[i] = np.unravel_index(np.argmax(prob[i,:]), prob[i,:].shape)[0] + 1\n",
    "    return y_p\n",
    "\n",
    "def accuracy(y_p, y):\n",
    "    n = y.shape[0]\n",
    "    count = 0\n",
    "    for i in range(n):\n",
    "        if y_p[i] == y[i]:\n",
    "            j = 1\n",
    "        else:\n",
    "            j = 0\n",
    "        count = j + count\n",
    "    return count / n\n",
    "\n",
    "prob = probability(X, all_theta)\n",
    "y_p = predict(prob)\n",
    "print ('accuracy = {0}%'.format(accuracy(y_p, Y) * 100))\n",
    "    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
